[小ネタ]CodeConnectionsのホスト設定でSelf Managed版GitLabに接続できないときに出たエラー集
たぬき( @tanuki_tzp )です。
先日、AWS CodePipelineのソースプロバイダーとしてSelf Managed版のGitLabを選択できるようになりました。
CodePipelineを作成するにあたり、AWS CodeConnections(旧:AWS CodeStar Connections)で接続をさくっと作るぞと思っていたら意外にハマってしまったので、ホストが作成できないときにどこを確認したかを備忘録的に残します。
ちなみに、大体のことは公式ドキュメントに記載されています。
大体のことが記載されているドキュメント: Create a connection to GitLab self-managed - Developer Tools console
エラー画面から原因を探りたい人のお役に立てれば幸いです。
パターン1 CodeConnectionsからGitLabへの通信経路が確立されていない
エラー解消方法:CodeConnectionsからの通信経路を確立する
非VPCの場合はCodeConnectionsが通信に使用するIP、VPC使用の場合は、VPCピアリング経由ではCodeConnectionsに紐づいているENIのPrivateIP、NatGateway経由ではNatGatewayのElasticIPからのport443への通信が通ることを確認してください。
参考: CodeConnectionsからの接続に使われるIPリスト 許可リストに追加する IP アドレス
ちなみに、GitLabとCodeConnections間の通信ができていても、操作しているブラウザからGitLabへの通信経路がない場合は、ホスト作成後の接続設定時にGitLab側での承認作業ができないため、必要であればそちらも開放する必要があります。
パターン2 GitLabに設定されている証明書が自己証明書もしくはプライベート証明書である
エラー解消方法(非VPC):パブリック証明書に切り替える
エラー解消方法(VPC使用):パブリック証明書に切り替える、もしくは、オプションにTLS証明書を入力する
自己証明書もしくはプライベート証明書を設定している場合に、オプションで証明書を登録していない場合に出力されるエラーです。
ホストを作成する際にも、GitLabのエンドポイントを"http://"で入力するとエラーが表示されます。
CodeConnectionsとGitLab間の通信はSSL/TLS通信であることが必須なためです。
パターン3 GitLabの個人アクセストークンの発行者にAdmin権限がない
エラー解消方法:Admin権限があるユーザーが個人アクセストークンを作成すること
強い権限を持つ個人アクセストークンを発行するため、基本的にAdmin権限を持っているユーザーがホスト設定の作成とセットアップの両方を作業することをおすすめします。
また、後続作業の接続の承認はAdmin権限がないユーザーでも許可することができました。
パターン4 GitLabの個人アクセストークンの有効期限切れ
エラー解消方法:有効期限が切れていない個人アクセストークンを発行する
GitLabで発行した個人アクセストークンの有効期限が切れていると発生するエラーです。
パターン5と同じエラーが発生するため、そちらもご確認ください。
パターン5 GitLabの個人アクセストークンの権限が"API"ではない
エラー解消方法:権限が"API"である個人アクセストークンを発行する
GitLabで発行した個人アクセストークンの権限が"API"でない場合に発生するエラーです。
パターン4と同じエラーが発生するため、そちらもご確認ください。
おわりに
CodeCodeConnectionsでサポートされていないGitLabのバージョン(14.10.5)での設定も試してみましたが、エラーは発生せず、ホスト・接続の作成自体は可能でした。
ただし、CodePipelineでの動作に影響があるかは確認できていないため、15.x以上のバージョンでの接続をおすすめします。